
As is the case with the other timer Helpers, the Timer1
Helper is used to take existing animation and control it's playback timing
in a Non Linear fashion. Please read through the following example to
get a better understanding of how this helper does that.
Imagine that you have an animated door that needs 31 frames to open (0-30).
The animation has two keyframes, one at frame 0 (door closed) and one
at frame 30 (door open). Standard animation packages like 3ds Max understand
this linear animation and so when the Play button is pushed, the door
will open over the course of frames 0 to 30 and that will be it. The Timer1
Helper, however, lets you extract that 31-frame block of animation, and
control it "outside of normal time". You will be able to trigger
it's start and stop times, loop it, and cause it to pause anywhere you'd
like repeatedly and reliably.
To use the Timer1 Helper you must think about the constants
in your block of animation. What are the key points or keyframes that
must be used? The only constants in this example are the two key frames
you have set to open the door (frame 0 and frame 30). Knowing this, you
can now set your Timer1 Helper to trigger your animation as you want.
The Start parameter reflects the first absolute keyframe
you want to use from your block of animation. In this example, that would
be frame 0, which represents the closed door. Frames1
is used to define the time (in frames) it takes to play back the block
of animation (frame 0-30) or a fraction of the “full” animation. Hold1
represents the last keyframe you want to use from your block of animation
that is played back at the speed set by Frames1. In this example, that
would be frame 30, which represents the opened door.
Ok, now let’s review what we know so far - for this door animation, let’s
say that Start is set to 0, Frames1
is set to 15 and Hold1 is set to 30.
With these settings, the entire block of animation (frames 0 to 30 - as
defined in the Start and Hold1 parameters) will be played back in 15 frames
(as defined by the Time1 parameter).
The Time2 sequence is just added after Time1 has finished. It controls
how long the added part of the animation should last. The concepts and
functions are the same as for Time1. Time3 defines the amount of time
it takes to reach the “End“ position of the “full” animation. Note, this
is not the “end” of the animation created by Timer1, it’s the last frame
of the “full” animation. In the case of the door an End value of 0 would
mean that the door swings back to its closed state (frame 0). To keep
the door a little bit open at the end of the animation one would use frame
5 or 10 as this would reflect a door open status from the “full” animation
(Frame 0-30).
We know that the above sounds like we had a few too many beers, but don’t
panic if you did not totally grasp this “time thing” in the first run.
Try to read it through again at a later stage and you might get into NLA
more deeply. Please also check out the door sample file that was installed
with the thinkingParticles software package.
ON - (Bool) This input data
stream determines whether the operator is considered 'on' or 'off.' You
can connect other operators to this input channel such as a Bool
Helper to activate/deactivate the whole operator.
Time - (Time) This input data stream is used to define the local
time for the operator when the user wants to override the default system
time.
Start - (Bool) This input data stream is used to trigger the animation
playback.
Particle - (Particle) This input data stream reads in the currently
selected particle group that is to be used for the animation block.
Start - (Frame) This input data stream is used to override the
Start spinner in the Timer1 rollout.
Frames1 - (Frame) This input data stream is used to override the
Frames1 spinner in the Timer1 rollout.
Hold1 - (Frame) This input data stream is used to override the
Hold1 spinner in the Timer1 rollout.
Frames2 - (Frame) This input data stream is used to override the
Frames2 spinner in the Timer1 rollout.
Hold2 - (Frame) This input data stream is used to override the
Hold2 spinner in the Timer1 rollout.
Frames3 - (Frame) This input data stream is used to override the
Frames3 spinner in the Timer1 rollout.
End - (Frame) This input data stream is used to override the End
spinner in the Timer1 rollout.
Extend - (Bool) This input data stream is used to override the
Extend checkbox state in the Timer1 rollout.
Single - (Bool) This input data stream is used to override the
Single checkbox state in the Timer1 rollout.
Out - (Bool) This output
data stream sends the true or false state to other node input data streams
regarding the Timer state.
Time - (Time) This output data stream send out the local Timer1
value. So if the Timer1's Value is set to 10, and it's at frame 6 of it's
animation block timing - this output data stream outputs a time of 6.
Particle - (Particle) This output data stream sends the particles
that are "tagged" by the Timer1 when it's active.

Start - This parameter sets the start frame within the block of
animation that is to be used by Frames1 to play back.
Frames1 - Usually an animation is keyframe dependent which means
that the animation lasts only as long as there are keyframes and animation
data placed at specific points in time. The Frames1 spinner tells the
Timer1 Helper to play back the defined block of animation in this many
frames, regardless of how many frames it would have taken originally.
So, an object that originally took 30 frames to complete its animation
would play back those 30 frames in 15 frames by setting the Frames1 value
to 15.
Hold1 - This spinner sets the last frame of the animation block
that should be used as the end point within the animation controlled by
Frames1. As an example, let’s say that you have Start
set to 0, Frames1 set to 30
and Hold1 to 5. This will make the Timer1
Helper only play back frames 0 (Start value) through 5 (Hold1 value) of
the animation block in 30 frames (as set in Frames1). This results in
a slow motion effect as an original 5 frame animation now takes 30 frames.
Frames2 - The Frames2 parameter tells the Timer1 Helper to play
back the animation block (defined as Start to Hold2) in this many frames,
regardless of how many frames it would have taken originally. Frames2
is an animation sequence added to Frames1. It is played
back after the animation of Frames1 has finished.
Hold2 - This spinner sets the last frame of the animation block
that should be used as the end point within the animation controlled by
Frames2. As an example, let’s say that you have Start
set to 0, Frames2 set to 30
and Hold2 to 5. This will make the Timer1
Helper only play back frames 0 (Start value) through 5 (Hold2 value) of
the animation block in 30 frames (as set in Frames2). This results in
a slow motion effect as an original 5 frame animation now takes 30 frames.
Frames3 - The Frames3 spinner sets the time the Timer1 Helper
needs to play back the animation block until the frame set in the End
spinner is reached.
End - This sets the frame that should be used from the animation
block to play back the animation controlled by Frames3. When set to 0,
it returns the animation to its original starting point. In the case of
the door example, since the animation started with the door closed at
frame 0, if this value is used in the End parameter, it will cause the
door to close when the animation ends.
Extend - Activate this checkbox to freeze the status of the animation
played until Frames2 as long as the ON input data stream of the Timer1
Helper receives a True condition. The animation sequence controlled by
Frames3 is played back as soon as this ON input data stream returns a
False condition. By turning on this checkbox, you can effectively cause
the Timer1 Helper to play the animation repeatedly as conditions or rules
are met.
Single - Activate this checkbox to play back a complete animation
cycle (Time1-Time3), as soon as the ON input data stream receives a True
Condition. This event happens one time
only, regardless of how many times the True condition is received after
that.